1. Field of Application
The present invention relates to an information processing apparatus that expands the function of an application by automatically executing procedures for the accessing of resources in a networked computer system or a single computer system.
2. Description of Related Art
In a computer system where a plurality of computer systems executing information processes are distributed and arranged in a network, each computer system contains local or global resources. These resources may be, for example, a file system, a database, a printer, or a networked computer. Additionally, data and programs which are provided by various services are also known as resources. For example, files and remote programs are resources. Furthermore, in broadcasting, audio and video information are also resources, and such information is continuous stream data, which is different from the conventional file data.
Generally, when a resource name is given to a computer system, a handle for accessing the resource corresponding to that name is obtained. An operation for the resource is applicable to the handle. For example, in a file system, a file descriptor is the handle, and the operation is "read" or "write". In a computer system, everything that enables acquisition of the handle is a resource.
An application is a program which retrieves and processes information from the resource, or is a program which sends the processed data to the resource. An example of an application is a data display device (browser) for the World Wide Web (WWW). When a user inputs the data name into the browser, the browser accesses the resource that is determined by the name, retrieves the data and displays the data in a specified window in the display screen. It is desirable to be able to expand the functions of such an application using specific methods in order to enable displaying of information of the retrieved data with a new format provided by a third party or to enable the application user to customize the data being retrieved through preprocessing or postprocessing.
One of the conventional methods for expanding functions of such applications is called the plug-in method. The plug-in method is an executable module which provides a procedure being called from the application using a specific application program interface (API). In general, a plug-in is loaded and dynamically linked in the application process space after startup of the application. Thus, the plug-in module is able to access resources (memory and files) that the application manages in the same process space. In the case of an application that runs with a window system, for example, a part of the graphic image originally drawn in the window by the application may be edited and redrawn by a procedure which is contained in the plug-in module.
Netscape Navigator (hereafter Netscape), an information browser from Netscape Communications Corp., accesses the WWW system, retrieves information in a specific format such as HTML (hyper text mark-up language) using a specific protocol such as HTTP (hyper text transfer protocol), renders the retrieved information to raster information, and displays the raster image in the specific window on the screen.
Using a plug-in, information in a specific format which Netscape alone cannot interpret but which the plug-in can interpret may be retrieved using a specific protocol, processed by the plug-in, rendered as a raster image containing text, and displayed in a Netscape window. This information may also be played back as audio or video.
In the case of Netscape, the plug-in module is created as a dynamic linking library (DLL), is loaded dynamically in the Netscape process space, and shares the process space with Netscape.
In the application function expansion method using such a plug-in, it becomes necessary to provide a plug-in corresponding to each type and format of information to be accessed, and to implement the plug-in dynamically loadable in the application process space.
Another type of application function expansion method is a remote programming system in the distributed network system. For example, the execution method of the remote programming disclosed in Japanese Laid-Open Patent Publication 7-182174 is a remote programming method in which a program is provided for executing data processing based on a specific instruction set, where an agent process, which is a part of the program, is transferred by a "go" (begin execution) operation to a remote computer system through a network, and the agent process is run on the remote computer system to accomplish data processing. In this method function expansion is realized by running a process to expand the application functions in the remote computer.
The applet based on Java technology, disclosed and provided by Sun Microsystems Inc., is a network loadable program in a remote programming system similar to the remote programming system disclosed in Japanese Laid-Open Patent Publication 7-182174, wherein a program for accomplishing data processing based on a specific instruction set is stored in a server on a network. Upon accessing the applet with a specific protocol, the applet is loaded into a resource display device or browser via the network, and runs to accomplish data processing ("The Java Language Environment", July, 1995 Sun Microsystems Inc.).
In either of the two methods described above, the program for accomplishing data processing may be loaded in the computer which runs the resource display device, or may be transferred to the remote computer to accomplish preprocessing or postprocessing of the data which accesses the resource.
The interactive computer network reception system and its method of operation, disclosed in U.S. Pat. No. 5,347,632, receives input from the user via a personal computer and converts them into data that is dependent on a computer and into executable code objects in the interactive computer system network. These data and codes are distributed and stored in a personal computer and a remote host computer. By combining the application to process the input from the user, the data and codes make it possible to display information desired by the user and to accomplish the desired transaction service, namely, data processing including preprocessing and postprocessing.
However, loading a program which can operate with multipurpose functions from a network or a memory device to a computer system and giving authority to execute for the purpose of preprocessing or postprocessing the data used to access the resource present security problems. Detection and prevention of unauthorized use of and damage to the resources in the computer system on which the program is loaded are difficult. The above execution methods also makes contamination by so-called computer virus easy.
Moreover, it is difficult to dynamically change the operation of the expanded function because the rules, methods and results of conversion are determined beforehand by the side which provides the service and applications in order to convert input from the user into directly executable code objects.
For example, in the case of a plug-in, it is necessary to store the plug-in module which handles a specific format and executes a specific process in a location where the application can be dynamically linked. As a result, changing of the plug-in process for each data accessed or according to the intent of the user is difficult.
Furthermore, in the remote programming system, it is possible for the manager of a server which stores a remote program providing an expansion function to change a function of the remote program: changes resulting in concurrent changing of the expansion functions of all the applications that use the remote program. As a result, this system is not usable when customized expansion functions are desired for each user.
In the above-described conventional expansion method for application functions, it is difficult for a third party other than the service or application provider and a user who uses the application to change the expansion function, including preprocessing and postprocessing for each item of information accessed or for each user of the application.